package lps.bet.variabilidades.numCartoesMgr;

import java.util.List;
import lps.bet.variabilidades.tiposDados.SistViarioUrbanoNumCartoes;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class NumCartoesDAO extends HibernateDaoSupport implements INumCartoesMgt, INumCartoesComplemento {

	public void salvarNumeroCartoes(SistViarioUrbanoNumCartoes numCartoes) {
		getHibernateTemplate().saveOrUpdate(numCartoes);
    }
	
	public void alterarLimiteCartoes(int limiteCartoes) {
		SistViarioUrbanoNumCartoes numCartoes = buscarSistViarioUrbanoNumCartoes();
		numCartoes.setLimiteCartoes(limiteCartoes);
		salvarNumeroCartoes(numCartoes);		
	}

	public int buscarLimiteCartoes() {
		List listaNumeroCartoes = getHibernateTemplate().loadAll(SistViarioUrbanoNumCartoes.class);
		SistViarioUrbanoNumCartoes numeroCartoes = (SistViarioUrbanoNumCartoes) listaNumeroCartoes.get(0);
		return numeroCartoes .getLimiteCartoes();
	}
	
	public SistViarioUrbanoNumCartoes buscarSistViarioUrbanoNumCartoes() {
		List listaNumCartoes = getHibernateTemplate().loadAll(SistViarioUrbanoNumCartoes.class);
		return (SistViarioUrbanoNumCartoes) listaNumCartoes.get(0);
	}

	public void criarLimiteCartoes(int limiteCartoes) {
		if (buscarSistViarioUrbanoNumCartoes() == null){
			SistViarioUrbanoNumCartoes numCartoes = new SistViarioUrbanoNumCartoes();
			numCartoes.setLimiteCartoes(limiteCartoes);
			salvarNumeroCartoes(numCartoes);
		}
	}
	
	public int buscarLimiteCartoes(int idPassageiro) {
		DetachedCriteria passageiro = DetachedCriteria.forClass(SistViarioUrbanoNumCartoes.class);
		passageiro.add(Restrictions.eq("idPassageiro", idPassageiro));
		List tmp = getHibernateTemplate().findByCriteria(passageiro);
		SistViarioUrbanoNumCartoes object = null;
		int retorno = 0;
		if (tmp.size()>0){
			 object = (SistViarioUrbanoNumCartoes) tmp.get(0);
			 retorno = object.getLimiteCartoes();
		}
		return retorno;

	}

	public void criarLimiteCartoes(int limite, int idPassageiro) {
		SistViarioUrbanoNumCartoes obj = new SistViarioUrbanoNumCartoes();
		obj.setIdPassageiro(idPassageiro);
		obj.setLimiteCartoes(limite);		
		DetachedCriteria criteria = DetachedCriteria.forClass(SistViarioUrbanoNumCartoes.class);
		criteria.add(Restrictions.eq("idPassageiro", idPassageiro));
		List tmp = getHibernateTemplate().findByCriteria(criteria);
		if (tmp.size() > 0){
			SistViarioUrbanoNumCartoes s = (SistViarioUrbanoNumCartoes) tmp.get(0);
			obj.setNumCartoesID(s.getNumCartoesID());
			getHibernateTemplate().saveOrUpdate(obj);
		}else{
			getHibernateTemplate().saveOrUpdate(obj);
		}
	}
	
}
